package br.ufrn.dca.gui;

import java.awt.Color;

import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;

import org.jfree.chart.ChartPanel;


public class TelaSeguidor extends JFrame {

	private ChartPanel chartPanelGrafico;
	private JLabel labelExibeTensaoEscrita;
	private JLabel labelExibeNivelTanque1;
	private JLabel labelExibeErro;
	private TelaAnaliseMalhaFechada telaAnaliseMalhaFechada;
	private JTextField textPolo1Real;
	private JTextField textPolo2Real;
	private JTextField textPolo1Im;
	private JTextField textPolo2Im;
	private JTextField textMatriz1;
	private JTextField textMatriz2;
	private JPanel panel_1;
	private JLabel lblPolo;
	private JLabel lblPolo_1;
	private JPanel panel_2;
	private TelaMalhaFechada1 telaMalhaFechada1;
	private final ButtonGroup buttonGroup = new ButtonGroup();
	private JRadioButton radioMatrizGanhos;
	private JRadioButton radioPolosDesejados;
	private JTextField textMatriz3;
	private JTextField textPolo3Real;
	private JTextField textPolo3Im;
	
	public JLabel getLabelExibeTensaoEscrita() {
		return labelExibeTensaoEscrita;
	}

	public void setLabelExibeTensaoEscrita(JLabel labelExibeTensaoEscrita) {
		this.labelExibeTensaoEscrita = labelExibeTensaoEscrita;
	}

	public JLabel getLabelExibeNivelTanque1() {
		return labelExibeNivelTanque1;
	}

	public void setLabelExibeNivelTanque1(JLabel labelExibeNivelTanque1) {
		this.labelExibeNivelTanque1 = labelExibeNivelTanque1;
	}

	public JLabel getLabelExibeTempoSubida() {
		return telaAnaliseMalhaFechada.getLabelExibeTempoSubida();
	}

	public void setLabelExibeTempoSubida(JLabel labelExibeTempoSubida) {
		telaAnaliseMalhaFechada.setLabelExibeTempoSubida(labelExibeTempoSubida);
	}

	public JLabel getLabelExibeTempoPico() {
		return telaAnaliseMalhaFechada.getLabelExibeTempoPico();
	}

	public void setLabelExibeTempoPico(JLabel labelExibeTempoPico) {
		telaAnaliseMalhaFechada.setLabelExibeTempoPico(labelExibeTempoPico);
	}

	public JLabel getLabelExibeOvershoot() {
		return telaAnaliseMalhaFechada.getLabelExibeTempoOvershoot();
	}

	public void setLabelExibeOvershoot(JLabel labelExibeOvershoot) {
		telaAnaliseMalhaFechada
				.setLabelExibeTempoOvershoot(labelExibeOvershoot);
	}

	public JLabel getLabelExibeTempoAcomodacao() {
		return telaAnaliseMalhaFechada.getLabelExibeTempoAcomodacao();
	}

	public void setLabelExibeTempoAcomodacao(JLabel labelExibeTempoAcomodacao) {
		telaAnaliseMalhaFechada
				.setLabelExibeTempoAcomodacao(labelExibeTempoAcomodacao);
	}

	public JLabel getLabelExibeErro() {
		return labelExibeErro;
	}

	public void setLabelExibeErro(JLabel labelExibeErro) {
		this.labelExibeErro = labelExibeErro;
	}

	public ChartPanel getChartPanelGrafico() {
		return chartPanelGrafico;
	}
	/**
	 * Launch the application.
	 */
	public TelaSeguidor(TelaMalhaFechada1 telaMalhaFechada1) {
		setResizable(false);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		this.telaMalhaFechada1 = telaMalhaFechada1;
		
		JPanel panel = new JPanel();
		panel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
		panel.setLayout(null);
		GroupLayout groupLayout = new GroupLayout(getContentPane());
		groupLayout.setHorizontalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(panel, GroupLayout.DEFAULT_SIZE, 567, Short.MAX_VALUE)
					.addContainerGap())
		);
		groupLayout.setVerticalGroup(
			groupLayout.createParallelGroup(Alignment.LEADING)
				.addGroup(groupLayout.createSequentialGroup()
					.addContainerGap()
					.addComponent(panel, GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE)
					.addContainerGap())
		);
		
		panel_2 = new JPanel();
		panel_2.setBorder(new LineBorder(new Color(0, 0, 0), 2));
		panel_2.setBounds(21, 40, 259, 154);
		panel.add(panel_2);
		panel_2.setLayout(null);
		
		textPolo1Real = new JTextField();
		textPolo1Real.setBounds(80, 27, 48, 22);
		panel_2.add(textPolo1Real);
		textPolo1Real.setColumns(10);
		
		textPolo2Real = new JTextField();
		textPolo2Real.setBounds(80, 67, 48, 22);
		panel_2.add(textPolo2Real);
		textPolo2Real.setColumns(10);
		
		JLabel lblParteReal = new JLabel("Parte Real");
		lblParteReal.setBounds(69, 0, 66, 16);
		panel_2.add(lblParteReal);
		lblParteReal.setHorizontalAlignment(SwingConstants.CENTER);
		
		JLabel lblParteImaginria = new JLabel("Parte Imagin\u00E1ria");
		lblParteImaginria.setBounds(145, 0, 104, 16);
		panel_2.add(lblParteImaginria);
		
		textPolo1Im = new JTextField();
		textPolo1Im.setBounds(157, 27, 48, 22);
		panel_2.add(textPolo1Im);
		textPolo1Im.setColumns(10);
		
		textPolo2Im = new JTextField();
		textPolo2Im.setBounds(157, 67, 48, 22);
		panel_2.add(textPolo2Im);
		textPolo2Im.setColumns(10);
		
		lblPolo = new JLabel("Polo 1:");
		lblPolo.setBounds(10, 31, 40, 16);
		panel_2.add(lblPolo);
		
		lblPolo_1 = new JLabel("Polo 2:");
		lblPolo_1.setBounds(10, 71, 40, 16);
		panel_2.add(lblPolo_1);
		
		JLabel lblPolo_2 = new JLabel("Polo 3:");
		lblPolo_2.setBounds(10, 115, 40, 16);
		panel_2.add(lblPolo_2);
		
		textPolo3Real = new JTextField();
		textPolo3Real.setColumns(10);
		textPolo3Real.setBounds(80, 113, 48, 22);
		panel_2.add(textPolo3Real);
		
		textPolo3Im = new JTextField();
		textPolo3Im.setColumns(10);
		textPolo3Im.setBounds(157, 113, 48, 22);
		panel_2.add(textPolo3Im);
		
		panel_1 = new JPanel();
		panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 2));
		panel_1.setBounds(327, 40, 246, 154);
		panel.add(panel_1);
		panel_1.setLayout(null);
		
		JLabel lblMatrizDeGanhos = new JLabel("Matriz de Ganhos do Observador");
		lblMatrizDeGanhos.setBounds(11, 0, 197, 16);
		panel_1.add(lblMatrizDeGanhos);
		
		JLabel lblL = new JLabel("K:");
		lblL.setBounds(21, 32, 19, 16);
		panel_1.add(lblL);
		
		textMatriz1 = new JTextField();
		textMatriz1.setBounds(31, 27, 59, 22);
		panel_1.add(textMatriz1);
		textMatriz1.setColumns(10);
		
		textMatriz2 = new JTextField();
		textMatriz2.setBounds(100, 27, 59, 22);
		panel_1.add(textMatriz2);
		textMatriz2.setColumns(10);
		
		textMatriz3 = new JTextField();
		textMatriz3.setColumns(10);
		textMatriz3.setBounds(169, 27, 59, 22);
		panel_1.add(textMatriz3);
		
		radioPolosDesejados = new JRadioButton("Polos desejados:");
		buttonGroup.add(radioPolosDesejados);
		radioPolosDesejados.setBounds(20, 8, 127, 25);
		panel.add(radioPolosDesejados);
		
		radioMatrizGanhos = new JRadioButton("Matriz de ganhos:");
		buttonGroup.add(radioMatrizGanhos);
		radioMatrizGanhos.setBounds(327, 7, 153, 25);
		panel.add(radioMatrizGanhos);
		getContentPane().setLayout(groupLayout);
		setSize(627,257);
		
	}
	
	public boolean isMatrizGanhos() {
		return radioMatrizGanhos.isSelected();
	}
	
	public boolean isPoloDesejaveis() {
		return radioPolosDesejados.isSelected();
	}
	
	public double getRealP1() {
		return Double.parseDouble(textPolo1Real.getText());
	}
	
	public double getRealP2() {
		return Double.parseDouble(textPolo2Real.getText());
	}
	
	public double getRealP3() {
		return Double.parseDouble(textPolo3Real.getText());
	}
	
	public double getImP1() {
		return Double.parseDouble(textPolo1Im.getText());
	}
	
	public double getImP2() {
		return Double.parseDouble(textPolo2Im.getText());
	}
	
	public double getImP3() {
		return Double.parseDouble(textPolo3Im.getText());
	}
	
	public double getMatrizA1() {
		return Double.parseDouble(textMatriz1.getText());
	}
	
	public double getMatrizA2() {
		return Double.parseDouble(textMatriz2.getText());
	}
	
	public double getMatrizA3() {
		return Double.parseDouble(textMatriz3.getText());
	}
	
	public void setMatrizA1(double a1) {
		textMatriz1.setText(String.valueOf(a1));
	}
	
	public void setMatrizA2(double a2) {
		textMatriz2.setText(String.valueOf(a2));
	}
	
	public void setMatrizA3(double a3) {
		textMatriz3.setText(String.valueOf(a3));
	}
	
	public void setRealP1(double reP1) {
		textPolo1Real.setText(String.valueOf(reP1));
	}
	
	public void setRealP2(double reP2) {
		textPolo2Real.setText(String.valueOf(reP2));
	}
	
	public void setImP1(double imP1) {
		textPolo1Im.setText(String.valueOf(imP1));
	}
	
	public void setImP2(double imP2) {
		textPolo2Im.setText(String.valueOf(imP2));
	}
}
